It is known to provide data processing systems with diagnostic mechanisms, such as debug mechanisms and trace mechanisms, for assisting in the development and debugging of hardware and software. The effectiveness of such systems is important in helping to reduce the time-to-market of new products.
One important characteristic of such diagnostic mechanisms is that they should not interfere and/or constrain the normal operation of the system. This is important for a variety of reasons. Diagnostic mechanisms will typically be used during design and development of a product, but will not be used when that product is performing its normal intended use as a production product. Accordingly, any constraint upon the performance of the system during such use of the production versions is significantly disadvantageous. Furthermore, there can be types of problems/bug which manifest themselves when the system is operating at full speed, but would not manifest themselves if the system was operating at a lower speed, or in some different manner, due to the presence and/or of the diagnostic mechanisms.
Known diagnostic mechanisms, such as the ETM trace mechanisms produced by ARM Limited of Cambridge, England, normally operate in response to the instruction-by-instruction (or access-by-access) activity of the system. The same is also true of the debug mechanisms provided in many known integrated circuits, such as those designed by ARM Limited of Cambridge, England. The ability to analyse the instruction-by-instruction behaviour of a system in order to diagnose problems and identify bugs is important to facilitate that diagnosis and identification. However, the level of intrusiveness in the system in permitting such instruction-by-instruction following is significant. This is particularly the case as processing speeds increase and systems become more complex, such as employing out-of-order execution and speculative execution.